package com.zhijian.warehouse.manage.entity.vo.response;

import com.zhijian.util.BeanUtil;
import com.zhijian.warehouse.manage.enums.ProductEnum;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Objects;

/**
 * 入库产品明细表 回显vo
 *
 * @author auto
 * @version 1.0
 * @date 2024-10-20 22:23:13
 */
@Data
@Api(tags = "入库产品明细表回显vo")
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class StoreRecordProductVo implements Serializable {

    private static final long serialVersionUID = -1;

    /**
     * 主键ID
     */
    @ApiModelProperty("主键ID")
    private Long id;

    /**
     * 入库单ID
     */
    @ApiModelProperty("入库单ID")
    private Long storeRecordId;

    /**
     * 产品ID
     */
    @ApiModelProperty("产品ID")
    private Long productId;

    /**
     * 入库数目
     */
    @ApiModelProperty("入库数目")
    private BigDecimal storeCount;

    /**
     * 库位ID
     */
    @ApiModelProperty("库位ID")
    private Long warehouseLocationId;


    /**
     * 品类ID
     */
    @ApiModelProperty("品类ID")
    private Long categoryId;

    /**
     * 单位ID
     */
    @ApiModelProperty("单位ID")
    private Long unitId;

    /**
     * 仓库ID
     */
    @ApiModelProperty("仓库ID")
    private Long warehouseId;

    /**
     * 领用时限限制天
     */
    @ApiModelProperty("领用时限限制天")
    private Integer limitDay;

    /**
     * 可领用个人用户ID串，以英文逗号隔开
     */
    @ApiModelProperty("可领用个人用户ID串，以英文逗号隔开")
    private String userIds;

    /**
     * 可领用部门ID串，以英文逗号隔开
     */
    @ApiModelProperty("可领用部门ID串，以英文逗号隔开")
    private String groupIds;

    /**
     * 安全库存
     */
    @ApiModelProperty("安全库存")
    private Integer safetyStock;

    /**
     * 发卡状态，1：已发卡，0：未发卡
     */
    @ApiModelProperty("发卡状态，1：已发卡，0：未发卡")
    private Byte productCardStatus;

    /**
     * 发卡状态字符串
     */
    @ApiModelProperty("发卡状态字符串")
    private String productCardStatusStr;

    /**
     * 领用状态，1：已领用，0：在库
     */
    @ApiModelProperty("领用状态，1：已领用，0：在库")
    private Byte useStatus;

    /**
     * 领用状态字符串
     */
    @ApiModelProperty("领用状态字符串")
    private String useStatusStr;

    /**
     * 状态，1：正常，2：故障，3：作废
     */
    @ApiModelProperty("状态，1：正常，2：故障，3：作废")
    private Byte productStatus;

    /**
     * 状态字符串
     */
    @ApiModelProperty("状态字符串")
    private String productStatusStr;

    /**
     * 备注
     */
    @ApiModelProperty("备注")
    private String productNote;

    /**
     * RFID编码
     */
    @ApiModelProperty("RFID编码")
    private String productRfId;

    /**
     * 编码
     */
    @ApiModelProperty("编码")
    private String productNumber;

    /**
     * 名称
     */
    @ApiModelProperty("名称")
    private String productName;

    /**
     * 型号
     */
    @ApiModelProperty("型号")
    private String productModel;
    /**
     * 单位
     */
    @ApiModelProperty("单位")
    private String unitName;
    /**
     * 类别
     */
    @ApiModelProperty("类别")
    private String categoryName;
    /**
     * RFID编码
     */
    @ApiModelProperty("库位名称")
    private String warehouseLocationName;

    /**
     * 库位名称
     */
    @ApiModelProperty("库位名称")
    private String warehouseName;


    public String getUseStatusStr() {
        if (Objects.isNull(this.useStatus)) {
            return null;
        }
        ProductEnum.UseStatusEnum lineEnum = ProductEnum.UseStatusEnum.getByCode(useStatus.intValue());
        return Objects.nonNull(lineEnum) ? lineEnum.getDesc() : null;
    }

    public String getProductCardStatusStr() {
        if (BeanUtil.isNotEmpty(this.productCardStatus) && ProductEnum.CardStatusEnum.getByCode(Integer.valueOf(this.productCardStatus)) != null)
            return ProductEnum.CardStatusEnum.getByCode(Integer.valueOf(this.productCardStatus)).getDesc();
        return productCardStatusStr;
    }

    public String getProductStatusStr() {
        if (BeanUtil.isNotEmpty(this.productStatus) && ProductEnum.StatusEnum.getByCode(Integer.valueOf(this.productStatus)) != null)
            return ProductEnum.StatusEnum.getByCode(Integer.valueOf(this.productStatus)).getDesc();
        return productStatusStr;
    }

}